async function aa(){
  console.log(1)
  await console.log(2);
  console.log(4)
}
Promise.resolve(3).then(res=>{
  console.log(res)
  setTimeout(()=>{
    console.log('setTimeout')
    Promise.resolve(8).then((res)=>{
      console.log(res)
    })
  })
  return 5
}).then(res=>{
  console.log(res)
})
aa();
Promise.resolve(6).then(res=>{
  console.log(res)
  return 7
}).then((res)=>{
  console.log(res)
})
/**
 * 第一轮宏任务对应的微任务群分别是await下一行对应是数据  promise.then().then().then无论要有多少个then都属于当前宏任务对应的微任务
 * 会按照顺序依次放到微任务队列中，
 * 然后可能会执行GUI页面渲染（有可能不会执行因为浏览器16ms渲染一次）
 * 当清空本轮对应的微任务的时候发现了宏任务就把任务放到了mic队列中，上一轮的微任务清空之后 可能执行并且执行栈没有要执行的同步的代码的时候
 * 就会从mic中拿出一个放到主栈中执行
 */
// 1 2 3 3 4 5 6 setTimeout 8
//mic [3,4,5,6,7]
// mis[setTimeout]